package com.hc.dao.provider;

import com.hc.bean.ProductInfo;
import org.apache.ibatis.jdbc.SQL;

import java.util.Map;

public class ProductInfoProvider {
    /*商品信息模糊分页查询*/
    public String selectProductInfoByParams(Map<String,Object> params){
        String sql=new SQL(){
            {
                SELECT("*");
                FROM("product_info");
                ProductInfo productInfo= (ProductInfo) params.get("productInfo");
//                System.out.println("productInfo============"+productInfo);
                if(productInfo!=null){
                    if(productInfo.getCode()!=null && !"".equals(productInfo.getCode())){
                        WHERE(" code=#{productInfo.code}");
                    }
                    if(productInfo.getName()!=null && !"".equals(productInfo.getName())){
                        WHERE(" name like concat('%',#{productInfo.name},'%')");
                    }
                    if(productInfo.getType()!=null && productInfo.getType().getId()!=null && productInfo.getType().getId()>0){
                        WHERE(" tid=#{productInfo.type.id}");
                    }
                    if(productInfo.getBrand()!=null && !"".equals(productInfo.getBrand())){
                        WHERE(" brand like concat('%',#{productInfo.brand},'%')");
                    }
                    /*使用的是包装类,所以要进行非空判断*/
                    if(productInfo.getPriceFrom()!=null && productInfo.getPriceFrom()>0){
                        WHERE(" price>=#{productInfo.priceFrom}");
                    }
                    if(productInfo.getPriceTo()!=null && productInfo.getPriceTo()>0){
                        WHERE(" price<=#{productInfo.priceTo}");
                    }
                }
            }
        }.toString();
        if(params.get("pager")!=null){
            sql+=" limit #{pager.firstLimitParam},#{pager.pageRows}";
        }
        return sql;
    }

    /*获取商品信息模糊查询总记录数*/
    public String getProductInfoCount(Map<String,Object> params){
        String sql=new SQL(){
            {
                SELECT("count(*)");
                FROM("product_info");
                ProductInfo productInfo= (ProductInfo) params.get("productInfo");
//                System.out.println("**********************************productInfo"+productInfo);
                if(productInfo!=null){
                    if(productInfo.getCode()!=null && !"".equals(productInfo.getCode())){
                        WHERE(" code=#{productInfo.code}");
                    }
                    if(productInfo.getName()!=null && !"".equals(productInfo.getName())){
                        WHERE(" name like concat('%',#{productInfo.name},'%')");
                    }
                    if(productInfo.getType()!=null && productInfo.getType().getId()!=null && productInfo.getType().getId()>0){
                        WHERE(" tid=#{productInfo.type.id}");
                    }
                    if(productInfo.getPriceFrom()!=null && productInfo.getPriceFrom()>0){
                        WHERE(" price>=#{productInfo.priceFrom}");
                    }
                    if(productInfo.getPriceTo()!=null && productInfo.getPriceTo()>0){
                        WHERE(" price<=#{productInfo.priceTo}");
                    }
                }
            }
        }.toString();
        return sql;
    }

    public String insertProductInfo(ProductInfo productInfo){
        String sql=new SQL(){
            {
                INSERT_INTO("product_info");
            }
        }.toString();
        return sql;
    }
}
